home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / debconf-show < prev    next >
Text File  |  2009-10-02  |  2KB  |  104 lines

  1. #!/usr/bin/perl
  2. # This file was preprocessed, do not edit!
  3.  
  4.  
  5. sub usage {
  6.     print STDERR <<EOF;
  7. Usage: 
  8.     debconf-show packagename [...] [--db=dbname]
  9.     debconf-show --listowners [--db=dbname]
  10.     debconf-show --listdbs
  11. EOF
  12.     exit(1);
  13. }
  14.  
  15.  
  16. use strict;
  17. use warnings;
  18. use Debconf::Db;
  19. use Debconf::Template;
  20. use Debconf::Question;
  21. use Getopt::Long;
  22.  
  23. my $db='';
  24. my $listowners=0;
  25. my @packages;
  26. my $listdbs=0;
  27.  
  28. GetOptions(
  29.     "db=s" => \$db,
  30.     "listowners" => \$listowners,
  31.     "listdbs" => \$listdbs,
  32. ) || usage();
  33.  
  34. unless ($listowners or $listdbs) {
  35.     @packages=@ARGV;
  36.     usage() unless @packages;
  37. }
  38.  
  39. Debconf::Db->load(readonly => 'true');
  40.  
  41. my %drivers = %Debconf::DbDriver::drivers;
  42. my $conf = Debconf::Config->config;
  43.  
  44. sub tree {
  45.     my $node=shift;
  46.     my $string=shift || "";
  47.     my $driver = Debconf::DbDriver->driver($node);
  48.     my $name = $driver->{name};
  49.  
  50.     $string = $string.$name;
  51.     print $string."\n";
  52.  
  53.     if ($driver->isa("Debconf::DbDriver::Stack")) {
  54.         $string=$string.'/';
  55.         map { tree($_->{name},$string) } @{$driver->{stack}};
  56.     }
  57. }
  58.  
  59. if ($db) {
  60.     my $driver = $drivers{$db};
  61.     die $db.": unknown database" unless defined($driver);
  62.     $Debconf::Db::config = $driver;
  63. }
  64.  
  65. my $qi=Debconf::Question->iterator;
  66.  
  67. if ($listdbs) {
  68.     tree($conf);
  69. }
  70. elsif (@packages) {
  71.     while (my $q=$qi->iterate) {
  72.         foreach my $package (@packages) {
  73.             if (grep { $package eq $_} split(/, /, $q->owners)) {
  74.                 if ($q->flag("seen") eq 'true') {
  75.                     print "* ";
  76.                 }
  77.                 else {
  78.                     print "  ";
  79.                 }
  80.                 print $q->name.":";
  81.                 if ($q->type eq 'password') {
  82.                     print " (password omitted)";
  83.                 }
  84.                 elsif (length $q->value) {
  85.                     print " ".$q->value;
  86.                 }
  87.                 print "\n";
  88.             }
  89.         }
  90.     }
  91. }
  92. elsif ($listowners) {
  93.     my %seen;
  94.     while (my $q=$qi->iterate) {
  95.         foreach (split(/, /, $q->owners)) {
  96.             unless ($seen{$_}) {
  97.                 print "$_\n";
  98.                 $seen{$_}=1;
  99.             }
  100.         }
  101.     }
  102. }
  103.  
  104.